今日會撰寫YAML來建置EKS Cluster並使用eksctl執行建置,以及Lens去查看Cluster建置狀態。
Self-managed node group VS Managed node group
Self-managed node group顧名思義就是自我控管的node group,需要自行安裝Kubernetes的套件以及docker和加入適當的tag去做識別,但可以選擇自己想要的AMI,當作EC2的OS,最終再把node group註冊到EKS cluster
Managed node group可以輕鬆地把node group註冊到EKS cluster上,會以ASG自動管理EC2的生命週期,且可以配置Cluster AutoScaler的功能,但AMI就必須選擇AWS提供的Amazon Linux 2
之後的EKS系列,都會以Managed node group為主去實踐
以下會使用YAML去建置EKS Cluster和eksctl執行指令,並使用Lens查看Cluster
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: itcluster
region: us-east-2
# vpc:
# id: "your vpc ID"
# securityGroup: "security group id"
# subnets:
# private:
# private1:
# id: "subnet id"
# public:
# public1:
# id: "subnet id"
vpc:
clusterEndpoints:
publicAccess: true
privateAccess: true
publicAccessCIDRs: ["myIP/32"]
nodeGroups: #self-managed
- name: it-ng
instanceType: t3.micro
desiredCapacity: 1
volumeSize: 20
volumeType: gp3
amiFamily: Ubuntu2004
labels:
role: self-node
ssh:
publicKeyName: itdemo
managedNodeGroups: #managed node group
- name: it-mng
instanceType: t3.small
minSize: 1
maxSize: 3
desiredCapacity: 1
volumeSize: 20
volumeType: gp3
ssh:
publicKeyName: itdemo
labels:
role: managed-node
apiVersion: 根據不同的apiVersion,可以建立不同的元件或服務
kind: 建立想要的服務或屬性
metadata: 物件的識別名稱
vpc: 如果要用已經存在的VPC以及subnet和SG,可以使用綠色註解的方式輸入ID。若使用預設則會建立3個AZ,6個subnet
publicAccess: 使用kubectl從internet去獲取Cluster的資訊
privateAccess: 需要再VPC裡面去access EKS Cluster的資訊
publicAccessCIDRs: 允許public IP的網段,可以access Cluster。預設是0.0.0.0/0相當於任何人都可以access
若加入cluster出現proxy error的錯誤訊息,需要先在command line執行,就會更新/.kube/config,就可以選擇剛剛建立的cluster
aws eks update-kubeconfig --name itcluster
點選Cluster右鍵[settings],最下方可以幫你一鍵安裝,安裝完之後,就可以看到worker node的使用量,以及Pod的總數
eksctl delete cluster --name itcluster
上述是簡單的Cluster建置說明以及方便管理操作Lens